package com.zhou.test.config;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.context.annotation.Configuration;


// 用于声明这是一个 Spring 管理配置 Bean，这里是引起 Spring 的注
//意
@Configuration
// 声明了这是一个切面类 。
@Aspect
public class AOPConfig {
    // 声明了 一个表达式，描述要织入的目标的特性，
    //  * 表示任意类型
    // .*(..) 表示任何方法名，括号表示参数，两个点表示任何参数类型
    @Around(value = "execution(* com.zhou.test.controller.AnnotationsUseDemoController.*(..))")
    public Object allAop(final ProceedingJoinPoint pjp) throws Throwable {
        Object[] args = pjp.getArgs();
        System.out.println("\n 切面 args = " + args);
        Object proceed = pjp.proceed();
        System.out.println("\n 切面 proceed = " + proceed);
        return proceed;
    }
}
